Expose transaction receipt fields#507
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
✱ Stainless preview builds for gridThis PR will update the cli csharp go kotlin openapi php python ruby typescript Edit this comment to update them. They will appear in their respective SDK's changelogs.
|
| ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `delete /cards/{id}` |
| ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `get /cards/{id}/transactions` |
| 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/EmbeddedWalletConfig` |
| 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftExternalAccountCreateInfo` |
| 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftBeneficiary` |
| 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardMerchant` |
| 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardPullSummary` |
| 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardRefundSummary` |
| 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardSettlementSummary` |
| 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/AgentAccountRestrictions` |
⚠️ grid-ruby studio · code · diff
Your SDK build had at least one new error diagnostic, which is a regression from the base state.
generate ❗→build ✅(prev:build ⏭️) →lint ❗(prev:lint ✅) →test ✅New diagnostics (2 error, 10 note)
❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `delete /cards/{id}` ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `get /cards/{id}/transactions` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/EmbeddedWalletConfig` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftExternalAccountCreateInfo` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftBeneficiary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardMerchant` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardPullSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardRefundSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardSettlementSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/AgentAccountRestrictions`
⚠️ grid-typescript studio · code · diff
Your SDK build had at least one new error diagnostic, which is a regression from the base state.
generate ❗→build ❗(prev:build ⏭️) →lint ❗(prev:lint ⏭️) →test ❗(prev:test ✅)New diagnostics (2 error, 10 note)
❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `delete /cards/{id}` ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `get /cards/{id}/transactions` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/EmbeddedWalletConfig` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftExternalAccountCreateInfo` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftBeneficiary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardMerchant` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardPullSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardRefundSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardSettlementSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/AgentAccountRestrictions`
⚠️ grid-python studio · code · diff
Your SDK build had at least one new error diagnostic, which is a regression from the base state.
generate ❗→build ✅(prev:build ⏭️) →lint ✅(prev:lint ⏭️) →test ✅pip install https://pkg.stainless.com/s/grid-python/69008289e3703437a69675ddda646f1b1178b434/grid-0.0.1-py3-none-any.whlNew diagnostics (2 error, 10 note)
❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `delete /cards/{id}` ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `get /cards/{id}/transactions` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/EmbeddedWalletConfig` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftExternalAccountCreateInfo` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftBeneficiary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardMerchant` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardPullSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardRefundSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardSettlementSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/AgentAccountRestrictions`
⚠️ grid-csharp studio · code · diff
Your SDK build had at least one new error diagnostic, which is a regression from the base state.
generate ❗→build ❗(prev:build ⏭️) →lint ❗(prev:lint ⏭️) →test ❗New diagnostics (3 error, 12 note)
❗ InvalidInternalState: Internal error, please try again. ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `delete /cards/{id}` ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `get /cards/{id}/transactions` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/EmbeddedWalletConfig` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftExternalAccountCreateInfo` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftBeneficiary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardMerchant` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardPullSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardRefundSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardSettlementSummary`
⚠️ grid-go studio · code · diff
Your SDK build had at least one new error diagnostic, which is a regression from the base state.
generate ❗→build ✅(prev:build ⏭️) →lint ❗→test ❗go get github.com/stainless-sdks/grid-go@97556c53b9db185841d56939e56c54b55675b42bNew diagnostics (5 error, 8 note)
❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `delete /cards/{id}` ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `get /cards/{id}/transactions` ❗ Model/GeneratedNameClash: Name clash may cause compile errors. ❗ Model/GeneratedNameClash: Name clash may cause compile errors. ❗ Model/GeneratedNameClash: Name clash may cause compile errors. 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/EmbeddedWalletConfig` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftExternalAccountCreateInfo` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftBeneficiary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardMerchant` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardPullSummary`
⚠️ grid-php studio · code · diff
Your SDK build had at least one new error diagnostic, which is a regression from the base state.
generate ❗→lint ❗(prev:lint ✅) →test ✅New diagnostics (4 error, 4 warning, 11 note)
❗ InvalidInternalState: Internal error, please try again. ❗ InvalidInternalState: Internal error, please try again. ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `delete /cards/{id}` ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `get /cards/{id}/transactions` ⚠️ Name/Collision: Possible undesirable name generated for language⚠️ Name/Collision: Possible undesirable name generated for language⚠️ Name/Collision: Possible undesirable name generated for language⚠️ InvalidInternalStateWarning: Something unexpected happened during codegen. Our team has been notified. Your SDK was still generated correctly, and no action is needed on your end. If you need help please reach out to support@stainless.com. --- Cannot have two defs with the same ID.Provide a slug for at least one def to disambiguate them.
💡 Model/Recommended: We recommend you use a model for `#/components/schemas/EmbeddedWalletConfig` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftExternalAccountCreateInfo`
⚠️ grid-kotlin studio · code · diff
Your SDK build had at least one new error diagnostic, which is a regression from the base state.
generate ❗→build ✅(prev:build ⏭️) →lint ✅(prev:lint ⏭️) →test ❗New diagnostics (2 error, 10 note)
❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `delete /cards/{id}` ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `get /cards/{id}/transactions` 💡 Java/NameNotAllowed: Encountered name `return` that conflicts with a [Kotlin keyword](https://kotlinlang.org/docs/keyword-reference.html#hard-keywords). Renamed to `return_`. To provide a different name, use a merge transform.
💡 Model/Recommended: We recommend you use a model for `#/components/schemas/EmbeddedWalletConfig` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftExternalAccountCreateInfo` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftBeneficiary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardMerchant` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardPullSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardRefundSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardSettlementSummary`
⚠️ grid-cli studio · code · diff
Your SDK build had at least one new error diagnostic, which is a regression from the base state.
generate ❗→build ❗→lint ❗→test ❗New diagnostics (2 error, 10 note)
❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `delete /cards/{id}` ❗ Endpoint/NotFound: Skipped endpoint because it's not in your OpenAPI spec: `get /cards/{id}/transactions` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/EmbeddedWalletConfig` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftExternalAccountCreateInfo` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/SwiftBeneficiary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardMerchant` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardPullSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardRefundSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/CardSettlementSummary` 💡 Model/Recommended: We recommend you use a model for `#/components/schemas/AgentAccountRestrictions`
This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-05-28 18:07:26 UTC
Greptile SummaryThis PR extends the
Confidence Score: 3/5Safe to merge once the empty-object gap in ReconciliationInstructions is addressed; the fees addition is clean. Making openapi/components/schemas/common/ReconciliationInstructions.yaml — the optionality change and stale description both need attention before merging.
|
| Filename | Overview |
|---|---|
| openapi/components/schemas/common/ReconciliationInstructions.yaml | Makes reference optional and adds transactionHash; stale "must be included" description and no constraint preventing a fully-empty object. |
| openapi/components/schemas/transactions/IncomingTransaction.yaml | Adds optional fees field (int64, minimum 0) to incoming transactions; straightforward and well-formed. |
| openapi.yaml | Generated bundle reflecting the source schema changes; no issues beyond those already flagged in the source files. |
| mintlify/openapi.yaml | Mintlify-targeted generated bundle; identical changes to openapi.yaml, no independent issues. |
Sequence Diagram
sequenceDiagram
participant Client
participant GridAPI
Client->>GridAPI: "GET /transactions/{id}"
GridAPI-->>Client: IncomingTransaction response
note over Client,GridAPI: New optional fields in response
note right of GridAPI: fees (int64, min 0)<br/>reconciliationInstructions.transactionHash
note right of GridAPI: reconciliationInstructions.reference<br/>is now optional (was required)
Client->>Client: Handle reconciliationInstructions
alt reference present
Client->>Client: Use reference for payment matching
else transactionHash present
Client->>Client: Use transactionHash for crypto receipt
else neither present (now schema-valid)
Client->>Client: Empty object — no matching data
end
Prompt To Fix All With AI
Fix the following 2 code review issues. Work through them one at a time, proposing concise fixes.
---
### Issue 1 of 2
openapi/components/schemas/common/ReconciliationInstructions.yaml:3-8
**Stale "must be included" wording after making `reference` optional**
The `reference` field description still reads "must be included with the payment", but the `required` constraint was just removed. Any API consumer reading this description will think the field is mandatory when the schema now treats it as optional — the two are in direct conflict.
### Issue 2 of 2
openapi/components/schemas/common/ReconciliationInstructions.yaml:1-13
**Schema now accepts a fully-empty `ReconciliationInstructions` object**
With both `reference` and `transactionHash` optional, the object `{}` is valid per the schema. The PR description states the intent is to allow a transaction hash *when no payment reference exists*, implying at least one field should always be present. A `minProperties: 1` constraint (or an `anyOf` / `oneOf` requiring at least one of the two fields) would close the gap and prevent a semantically meaningless empty object from passing validation.
Reviews (1): Last reviewed commit: "feat(transactions): expose receipt recon..." | Re-trigger Greptile
540a94a to
d50e79d
Compare
d50e79d to
6be0f2a
Compare
6be0f2a to
26b29d5
Compare
26b29d5 to
6fa1581
Compare
6fa1581 to
cf02763
Compare
cf02763 to
c2613d2
Compare
|
a945aa1 to
86be1e7
Compare
Summary
transactionHashtoreconciliationInstructionsfor destination-side crypto settlement receipt data.referenceoptional so reconciliation instructions can contain only a transaction hash when no payment reference exists.feesto incoming transactions, denominated in the receiving currency's smallest unit.openapi.yamlandmintlify/openapi.yaml.Implementation Note
The public API stays storage-agnostic. In webdev,
transactionHashis populated from hash-bearing Grid settlement references, including the existingUSDC_SOLANAsettlement reference type and the new genericCRYPTOtype.Testing
make buildmake lint